﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sy5_6
{
    public partial class Form1 : Form
    {
        Bitmap img = new Bitmap(250, 250); // 图像立方体的画布（250×250）
        Point[][] pts = new Point[3][]; // 存储3个立面的放射变换坐标
        Graphics g; // 画布的Graphics对象
        Bitmap pic; // 临时存储打开的图片
        public Form1()
        {
            InitializeComponent();
            this.Text = "图立方"; // 设置窗体标题
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 1. 设置PictureBox的大小和位置
            pictureBox1.ClientSize = new Size(250, 250);
            pictureBox1.Location = new Point(10, 10);

            // 2. 初始化3个立面的放射变换坐标（实验给定的参数）
            // 前立面坐标
            pts[0] = new Point[] { new Point(0, 50), new Point(125, 100), new Point(0, 200) };
            // 上立面坐标
            pts[1] = new Point[] { new Point(125, 0), new Point(250, 50), new Point(0, 50) };
            // 右立面坐标
            pts[2] = new Point[] { new Point(125, 100), new Point(250, 50), new Point(125, 250) };

            // 3. 默认选中“右”单选按钮
            radioButton3.Checked = true;

            // 4. 初始化画布的Graphics对象
            g = Graphics.FromImage(img);
            pictureBox1.Image = img; // 将画布绑定到PictureBox显示
        }

        private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.FileName = "";
            openFileDialog1.Filter = "所有图像文件|*.jpg;*.bmp;*.gif;*.tif;*.png|JPG图像|*.jpg|BMP图像|*.bmp";

            // 打开文件对话框，选择图片
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                // 加载选中的图片
                pic = new Bitmap(openFileDialog1.FileName);
                // 定义图片的裁剪区域（整图）
                Rectangle sRect = new Rectangle(0, 0, pic.Width, pic.Height);

                // 根据选中的单选按钮，将图片绘制到对应的立面
                if (radioButton1.Checked) // 前立面
                {
                    g.DrawImage(pic, pts[0], sRect, GraphicsUnit.Pixel);
                }
                else if (radioButton2.Checked) // 上立面
                {
                    g.DrawImage(pic, pts[1], sRect, GraphicsUnit.Pixel);
                }
                else if (radioButton3.Checked) // 右立面
                {
                    g.DrawImage(pic, pts[2], sRect, GraphicsUnit.Pixel);
                }

                // 刷新PictureBox，显示更新后的图像立方体
                pictureBox1.Refresh();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // 设置保存文件对话框的格式
            saveFileDialog1.FileName = "";
            saveFileDialog1.Filter = "BMP图像|*.bmp|JPG图像|*.jpg|GIF图像|*.gif|TIF图像|*.tif|PNG图像|*.png";

            // 打开保存对话框，选择保存路径
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                // 将画布（img）保存为指定格式的文件
                img.Save(saveFileDialog1.FileName);
            }
        }
    }
}
